#!/bin/sh

die () { echo "$@" ; cleanup ; exit 1; }

cleanup() {
  unset -f nvm_ls_remote nvm_ls_remote_iojs
}

\. ../../../nvm.sh

\. ../../common.sh

# When nvm_ls_remote succeeds but nvm_ls_remote_iojs fails,
# nvm_remote_versions should propagate the iojs failure exit code.
nvm_ls_remote() {
  echo "v0.10.0"
  return 0
}
nvm_ls_remote_iojs() {
  echo "N/A"
  return 5
}

try nvm_remote_versions
[ "_$CAPTURED_EXIT_CODE" = "_5" ] || die "expected iojs failure exit code 5 to propagate, got $CAPTURED_EXIT_CODE"

# When nvm_ls_remote fails and nvm_ls_remote_iojs succeeds,
# nvm_remote_versions should propagate the node failure exit code.
nvm_ls_remote() {
  echo "v0.10.0"
  return 7
}
nvm_ls_remote_iojs() {
  echo "iojs-v1.0.0"
  return 0
}

try nvm_remote_versions
[ "_$CAPTURED_EXIT_CODE" = "_7" ] || die "expected node failure exit code 7 to propagate, got $CAPTURED_EXIT_CODE"

# When both fail, nvm_remote_versions should propagate the node failure exit code
# (since it is checked first).
nvm_ls_remote() {
  echo "v0.10.0"
  return 3
}
nvm_ls_remote_iojs() {
  echo "iojs-v1.0.0"
  return 4
}

try nvm_remote_versions
[ "_$CAPTURED_EXIT_CODE" = "_3" ] || die "expected node failure exit code 3 to take priority, got $CAPTURED_EXIT_CODE"

# When both succeed, exit code should be 0.
nvm_ls_remote() {
  echo "v0.10.0"
  return 0
}
nvm_ls_remote_iojs() {
  echo "iojs-v1.0.0"
  return 0
}

try nvm_remote_versions
[ "_$CAPTURED_EXIT_CODE" = "_0" ] || die "expected exit code 0 when both succeed, got $CAPTURED_EXIT_CODE"

cleanup
